﻿#ifndef DISPLAYWIDGET_H
#define DISPLAYWIDGET_H
#include <QWidget>
#include <QMenu>
#include <QTreeWidgetItem>
#include <QTreeWidget>
#include <QHash>
#include <QQueue>
#include <QList>
#include <QVariant>
#include <QtDebug>
#include <QProgressBar>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QMessageBox>
#include <QMenu>
#include <QAction>
#include <QMessageBox>
#include "treeinfoitem.h"
#include "treedata.h"

namespace Ui {
class DisplayWidget;
}

//数据显示类
class DisplayWidget : public QWidget
{
    Q_OBJECT

public:
    explicit DisplayWidget(Tree* treedata, QMenu* itemMenu, QWidget *parent = nullptr);
    ~DisplayWidget();
    int currentIndex();
    void setCurrentIndex(int index);
    void clear();
    void inputDataToTreeWidget();
    void inputDataToTableWidget();
    void addChild(int treeItemID);
    void addMate(int treeItemID);
    void updateValue(int treeItemID);
    void deleteValue(int treeItemID);
    void updateTheme(QColor newTheme, QColor oldTheme);
signals:
    void addAncestry();//需要创建祖先的信号
    void toDetail(int id);//显示详情的信号
    void toRelSearch(int id);//显示亲戚关系查询的信号
    void closeTool(); //关闭工具页面
    void disableMenu();//关闭一些菜单选项
private:
    Ui::DisplayWidget *ui;
    QMenu* menu;

    //通过hash表快速查找特定项目
    QHash<int, QTreeWidgetItem*> hashTreeWidgetItem;
    QHash<int, QTableWidgetItem*> hashTableWidgetItem;

    Tree* tree;

    //表格右键菜单
    QMenu* tableWidgetItemMenu;
    QAction* relSearch;
    QAction* detail;
    QAction* del;


    void init();
    void initConnections();
    void addTableWidgetItem(int row, TreeNode* data);
    void updateTableWidgetItem(int row, TreeNode* data);
};

#endif // DISPLAYWIDGET_H
